package designpatterns.template;

/**
 * @author 真香
 * @create 2022-11-27 21:48
 *
 * 这3只企鹅，由于每天吃的都一样，睡觉也都是站着睡，但是打豆豆的方式却不同，
 * 所以我们可以将“吃饭，睡觉，打豆豆”抽象出来，因为“吃饭，睡觉”都一样，所以我们可以直接实现出来，
 * 但是他们“打豆豆”的方式不同，所以封装成抽象方法，需要每个企鹅单独去实现“打豆豆”的方式。
 * 最后再新增一个方法everyDay()，固定每天的执行流程：
 *
 */

public abstract class penguin {

    public void  eating(){
        System.out.println("吃饭");
    }

    public void sleeping() {
        System.out.println("睡觉");
    }

    /**
     * 三只企鹅打豆豆的方式都不同，所以用抽象方法定义，再由各自子类实现，如何打豆豆
     */
    public abstract void beating();


    /**
     *  由于吃饭、睡觉、打豆豆都是每只企鹅每天要执行的，所以统一用一个方法封装行为
     */
    public void everyDay(){
      this.eating();
      this.sleeping();
      this.beating();
    }

}
